static void gtk_widget_real_style_updated (GtkWidget *widget);
static gboolean gtk_widget_real_show_help (GtkWidget *widget,
GtkWidgetHelpType help_type);
+static gboolean _gtk_widget_run_controllers (GtkWidget *widget,
+ const GdkEvent *event,
+ GtkPropagationPhase phase);
static void gtk_widget_dispatch_child_properties_changed (GtkWidget *object,
guint n_pspecs,
GParamSpec **pspecs);
+static gboolean gtk_widget_real_button_event (GtkWidget *widget,
+ GdkEventButton *event);
+static gboolean gtk_widget_real_motion_event (GtkWidget *widget,
+ GdkEventMotion *event);
static gboolean gtk_widget_real_key_press_event (GtkWidget *widget,
GdkEventKey *event);
static gboolean gtk_widget_real_key_release_event (GtkWidget *widget,
GdkEventFocus *event);
static gboolean gtk_widget_real_touch_event (GtkWidget *widget,
GdkEventTouch *event);
+static gboolean gtk_widget_real_grab_broken_event (GtkWidget *widget,
+ GdkEventGrabBroken *event);
static gboolean gtk_widget_real_focus (GtkWidget *widget,
GtkDirectionType direction);
static void gtk_widget_real_move_focus (GtkWidget *widget,
klass->move_focus = gtk_widget_real_move_focus;
klass->keynav_failed = gtk_widget_real_keynav_failed;
klass->event = NULL;
- klass->button_press_event = NULL;
- klass->button_release_event = NULL;
- klass->motion_notify_event = NULL;
+ klass->button_press_event = gtk_widget_real_button_event;
+ klass->button_release_event = gtk_widget_real_button_event;
+ klass->motion_notify_event = gtk_widget_real_motion_event;
klass->touch_event = gtk_widget_real_touch_event;
klass->delete_event = NULL;
klass->destroy_event = NULL;
klass->drag_data_received = NULL;
klass->screen_changed = NULL;
klass->can_activate_accel = gtk_widget_real_can_activate_accel;
- klass->grab_broken_event = NULL;
+ klass->grab_broken_event = gtk_widget_real_grab_broken_event;
klass->query_tooltip = gtk_widget_real_query_tooltip;
klass->style_updated = gtk_widget_real_style_updated;
_gtk_widget_draw (widget, cr);
}
+static gboolean
+gtk_widget_real_button_event (GtkWidget *widget,
+ GdkEventButton *event)
+{
+ return _gtk_widget_run_controllers (widget, (GdkEvent *) event,
+ GTK_PHASE_TARGET);
+}
+
+static gboolean
+gtk_widget_real_motion_event (GtkWidget *widget,
+ GdkEventMotion *event)
+{
+ return _gtk_widget_run_controllers (widget, (GdkEvent *) event,
+ GTK_PHASE_TARGET);
+}
+
static gboolean
gtk_widget_real_key_press_event (GtkWidget *widget,
GdkEventKey *event)
gint signum;
if (!event->emulating_pointer)
- return FALSE;
+ return _gtk_widget_run_controllers (widget, (GdkEvent*) event,
+ GTK_PHASE_TARGET);
if (event->type == GDK_TOUCH_BEGIN ||
event->type == GDK_TOUCH_END)
return return_val;
}
+static gboolean
+gtk_widget_real_grab_broken_event (GtkWidget *widget,
+ GdkEventGrabBroken *event)
+{
+ return _gtk_widget_run_controllers (widget, (GdkEvent*) event,
+ GTK_PHASE_TARGET);
+}
#define WIDGET_REALIZED_FOR_EVENT(widget, event) \
(event->type == GDK_FOCUS_CHANGE || gtk_widget_get_realized(widget))